                            # 4.1 遍历整个列表
# 4.1.1 深入地研究循环
magicians = ['alice', 'david', 'carolina']
    # for item in list_of_items :
for magician in magicians :
#每次从列表magicians中取出一个名字，存到变量magican中
    print(magician.title()) #打印magician的值
# 4.1.2 在for循环中执行更多的操作
for magician in magicians :
    print( magician.title() + ", that was a great trick!" )
    print( "I can't wait to see your next trick, " + magician.title() + ".\n" )
# 4.1.3 在for循环结束后执行一些操作
    #for循环后面没有缩进的代码只执行一次！
for magician in magicians : #冒号是告诉Python，下一行是循环的第一行
    print( magician.title() + ", that was a great trick!" )
    print( "I can't wait to see your next trick, " + magician.title() + ".\n" )
print( "Thank you, every one. That was a great magic show!" )
                            # 4.3 创建数字列表
# 使用函数range()
    #range(begin, end) 效果为产生 [ begin, end ) 的所有整数
for value in range(1, 6) :
    print( value ) #打印数字1~5
# 使用range()创建数字列表
numbers = list( range(1, 6) ) # list()将结果转换成列表
print( numbers )
even_numbers = list( range(2, 11, 2) ) #第三个参数为步长
print( even_numbers ) #打印2~10内所有的偶数
squares = [] #创建一个空表
for val in range(1, 11):    #遍历1~10的值
    squares.append( val ** 2  )    #将计算的平方值附加到列表末尾
print( squares )
# 对数字列表执行简单的统计计算
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print( min(digits) )    #最小值
print( max(digits) )    #最大值
print( sum(digits) )    #总和
# 列表解析
    # 列表的标识符 = [ 表达式 + 给表达式提供值 ]
squares = [ val**2 for val in range(1, 11) ]
print( squares ) #获得1~10对应的平方数
odd = [ num for num in  range(1, 12, 2) ] #获得1~11内所有奇数
print( odd )
                            # 4.4 使用列表的一部分
# 4.4.1 切片
    #列表的部分元素，称为切片
    #List[begin:end] 选取列表中第 begin 到第 end - 1 之间的元素
players = [ 'charles', 'martina', 'michael', 'florence', 'eli' ]
print( players[0:3] )
print( players[1:4] )
print( players[ :4] )   #自动从列表头开始
print( players[2: ] )   #自动终止与列表尾
print( players )
print( players[-3: ] )  #输出最后三名队员（从倒数第三名开始至末尾）
players.append( "howie" )
players.append( "sheldon" )
print( players )
print( players[-3: ] )  #输出最后三名队员（从倒数第三名开始至末尾）
# 4.4.2 遍历切片
print( "Here are the first three players on my team:" )
for first_three_players in players[:3] :    #只遍历前三名队员，并打印他们的名字
    print( first_three_players.title() )
# 4.4.3 复制列表
my_foods = [ '烧烤', '火锅', '大盘鸡' ]
friend_foods = my_foods[ : ]
# 注意不是friend_foods = my_foods,这只是让两个变量名都指的是同一个列表
my_foods.append( "黄焖鸡" )
friend_foods.append( "奶茶" )
print( "我最喜欢：" )
print( my_foods )
print( "\n我朋友最喜欢：" )
print( friend_foods )
                            #元组
# 4.5.1 定义元组
    # 不可变的列表，称为元组
dimensions = (200, 50)  # 将一个大小不应改变的矩形的长宽存储进元组，注意是圆括号
print( dimensions[0] )
print( dimensions[1] )
# 4.5.2 遍历元组
for dimension in dimensions :
    print( dimension )
# 4.5.3 修改元组变量
dimensions = (250, 40)  # 重新定义整个元组
print( "\nModified dimensions:" )
for dimension in dimensions :
    print( dimension )